package cn.ztc.tool.enums;

import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;

/**
 * 工具类
 *
 * @author 张天赐
 */
public class Util {

    /**
     * 获取泛型对象的实际类型参数
     *
     * @param object 对象实例
     * @return 实际参数类型
     */
    public static Type[] getActualTypeArguments(Object object) {
        // 泛型超类
        Type genericSuperclass = object.getClass().getGenericSuperclass();
        if (genericSuperclass instanceof ParameterizedType) {
            ParameterizedType parameterizedType = (ParameterizedType)genericSuperclass;
            // 实际类型参数
            return parameterizedType.getActualTypeArguments();
        } else {
            throw new RuntimeException("获取泛型超类失败.");
        }
    }
}
